home *** CD-ROM | disk | FTP | other *** search
/ Gigantic Games 2 / Gigantic Games 2.iso / pc / _c_ / callisto / callisto.source / readfile.c < prev    next >
C/C++ Source or Header  |  1994-12-23  |  1KB  |  63 lines

  1. /* Readfile scans a file from disk and prints it out using the formatted
  2.  * print routine in console.c. Written 1987 by Russell Wallace. */
  3.  
  4. #include <libraries/dos.h>
  5.  
  6. #define BUFLEN 256L
  7. #define EOF '\0'
  8.  
  9. char inbuffer[BUFLEN];
  10. char prbuf[BUFLEN];
  11.  
  12. char charin (fp)
  13. struct FileInfoBlock *fp;
  14. {
  15.     static LONG inpoint=BUFLEN-1;
  16.     static LONG maxin=BUFLEN-1;
  17.     LONG Read ();
  18.     char ch;
  19.     if (++inpoint>=maxin)
  20.     {
  21.         maxin=Read (fp,inbuffer,BUFLEN);
  22.         inpoint=0;
  23.     }
  24.     if (maxin==0)
  25.         return (0);    /* End of file */
  26.     ch=inbuffer[inpoint];
  27.     if (ch<' ' && ch!='\0' && ch!='\n')
  28.         ch=' ';        /* Don't give any weird characters like some WPs put in */
  29.     return (ch);
  30. }
  31.  
  32. short readfile (filename)
  33. char *filename;
  34. {
  35.     struct FileInfoBlock *fp;
  36.     char charin ();
  37.     int endoffile=0;
  38.     short i;
  39.     if (!(fp=Open (filename,MODE_OLDFILE)))
  40.         return (1);    /* Error */
  41.     do
  42.     {
  43.         i=0;
  44.         do
  45.             prbuf[i++]=charin (fp);
  46.         while (prbuf[i-1]!=EOF && i<200);
  47.     if (prbuf[i-1]!=EOF)
  48.         {
  49.         do
  50.             prbuf[i++]=charin (fp);
  51.         while (prbuf[i-1]!=EOF && i<250 && prbuf[i-1]!=' ');
  52.         }
  53.     if (prbuf[i-1]!=EOF)
  54.         prbuf[i]='\0';
  55.             else
  56.                 endoffile++;
  57.         print (prbuf);
  58.     }
  59.     while (endoffile==0);
  60.     Close (fp);
  61.     return (0);
  62. }
  63.